
import api from '@/common/lib/request.js';
export default {
	data() {
		return {
			deviceType: 'false', // 是否为app || ios  android
			localVersion: "", //当前版本号
			hasNewVersion: false,
			newVersion: {
				description: null, // 版本描述
				is_force: null, // 0:自然更新 1强制更新 
				url: null, // 
				version: null, // 
			},
		}
	},
	onLoad() {
		if (!uni.getStorageSync('version')) {
			uni.setStorageSync('version', '2.5');
		}
		this.localVersion = uni.getStorageSync('version')
		// #ifdef APP-PLUS
		this.deviceType = uni.getSystemInfoSync().platform // 客户端平台，值域为：ios、android、mac（3.1.10+）、windows（3.1.10+）、linux（3.1.10+）
		this.checkUpdate()
		// #endif

		// this.deviceType = 'android'
		// this.checkUpdate()
	},
	methods: {
		/*
		 * 应用的检测更新
		 * @param {Object} version 服务器最新 应用版本号
		 * @param {Object} url 版本链接
		 * @param {Object} is_force 更新方式 0: 自然更新 1：强制更新
		 * @param {Object} description 最新版本描述
		 */
		checkUpdate() {
			if(this.deviceType !== 'ios' && this.deviceType !== 'android') {
				return
			}
			const _this = this;
			api.request({
					url: `/versions?source=${this.deviceType}`,
					// url: '/version',
					data: {}
				})
				.then(response => {
					if (response.version !== _this.localVersion) {
						_this.hasNewVersion = true
						_this.newVersion = response
						// 判断缓存时间
						var currTimeStamp = new Date().getTime();
						uni.getStorage({
							key: 'tip_version_update_time',
							success: function (res) {
								var lastTimeStamp = res.data || currTimeStamp;
								//定义提醒的时间间隔，避免烦人的一直提示，一天:86400000 十分钟:60000 十秒: 6000
								var tipTimeLength = 86400000; // 一天
								if((lastTimeStamp+tipTimeLength) > currTimeStamp){
									//避免多次提醒，不要更新
									console.log("避免多次提醒，不要更新");
								}else{
									//重新设置时间戳
									_this.setStorageForAppVersion(currTimeStamp);
									//进行版本型号的比对 以及下载更新请求
									_this.checkWify()
								}
							},
							fail:function(res){
								_this.setStorageForAppVersion(currTimeStamp);
							}
						});
						
						
					}
				});
		},
		checkWify() {
			//TODO 此处判断是否为 WIFI连接状态
			if(plus.networkinfo.getCurrentType()!=3) {
			// if(false) {
				uni.showToast({  
					title: '有新的版本发布，检测到您目前非Wifi连接，为节约您的流量，程序已停止自动更新',  
					mask: true,  
					duration: 5000,
					icon:"none"
				});  
				return;  
			}else{
				this.upateVersion()
			}
		},
		upateVersion(){
			var _this = this
			uni.showModal({
				title: "版本更新",
				content: '有新的版本发布，检测到您当前为Wifi连接，是否立即进行新版本下载？',
				confirmText:'立即更新',
				cancelText:'稍后进行',
				showCancel: _this.newVersion.is_force == 0,
				success: function (res) {
					if (res.confirm) {
						if(_this.deviceType == 'android') {
							_this.downloadAndroid()
						}else {
							_this.downloadIos()
						}
					} else if (res.cancel) {
						console.log('稍后更新');
					}
				}
			});
		},
		downloadIos(){
			//在App Store Connect中的App Store下的app信息，可找到appleId
			let appleId= 1551300953
			plus.runtime.launchApplication({
			    action: `itms-apps://itunes.apple.com/cn/app/id${appleId}?mt=8`
			}, function(e) {
			    console.log('Open system default browser failed: ' + e.message);
			});
		},
		downloadAndroid(){
			const _this = this
			//设置 最新版本apk的下载链接
			// var downloadApkUrl = GLOBAL.DOMAIN_URL+"/apk/mzz2.apk";
			var downloadApkUrl = _this.newVersion.url;
			var dtask = plus.downloader.createDownload( downloadApkUrl, {}, function ( d, status ) {  
					// 下载完成  
					if ( status == 200 ) {
						plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename),{},{},function(error){  
							uni.showToast({  
								title: '安装失败',
								duration: 1500  
							});  
						})
					} else {  
						 uni.showToast({  
							title: '更新失败',
							duration: 1500  
						 });  
					}    
				});  
			dtask.start();
		},
		 
		/**
		 * //设置应用版本号对应的缓存信息
		 * @param {Object} currTimeStamp 当前获取的时间戳
		 */
		setStorageForAppVersion(currTimeStamp) {
			uni.setStorage({
				key: 'tip_version_update_time',
				data: currTimeStamp,
				success: function () {
					console.log('setStorage-success');
				}
			});
		},
	}
}
